Distributed database systems include a plurality of storage devices spread among a network of interconnected computers. The distributed database systems typically have greater reliability and availability than parallel database systems, among other benefits. Various internet services, for example social networking services, employ distributed database systems to manage the storage and retrieval of information. Generally, the need to efficiently and accurately read and write data across the database system increases with a greater amount of information, a greater number of users, and stricter latency requirements.
A distributed database system generally supports a specific consistency model between the system and developers who use the system to test or implement services. When data is stored in a distributed system, the data must propagate among multiple computer resources or clusters before it has achieved replica convergence across the distributed system. A system having an “eventually consistent” model informally guarantees that, if no new updates are made to a given data item, eventually all accesses to that item will return the last updated value. In contrast, a system having a “strongly consistent” database requires that all resources or clusters have the same view of stored data. Conventional distributed database systems manage eventually consistent and strongly consistent applications by employing various open source frameworks. However, it is difficult to expand functionality across new resources of the system due to constraints of the frameworks and the need to reconfigure the frameworks, as well as the different resource requirements of the different consistency models. For instance, any modifications to a service configuration typically requires intervention, reconfiguration, and/or approval from a storage engineer.
Accordingly, there is an opportunity for techniques and frameworks to dynamically manage consistency model configurations within distributed databases.